import 'package:flutter/material.dart';

/// 数据表格列定义
class HDataColumn {
  /// 列标签
  final String label;
  
  /// 数据字段名
  final String field;
  
  /// 是否为数字列
  final bool numeric;
  
  /// 提示文本
  final String? tooltip;
  
  /// 是否可排序
  final bool sortable;
  
  /// 值格式化函数
  final String Function(dynamic)? formatValue;

  /// 单元格内容构建器，用于自定义单元格内容
  /// 
  /// 如果提供此函数，将使用此函数渲染单元格内容，而不是使用默认的文本显示
  /// 参数包括：原始数据值、行数据、行索引
  final Widget Function(dynamic value, Map<String, dynamic> rowData, int rowIndex)? cellBuilder;
  
  /// 列的固定宽度，如果设置，会忽略minWidth和maxWidth
  final double? width;
  
  /// 列的最小宽度，如果不指定，默认为80
  final double? minWidth;
  
  /// 列的最大宽度，如果不指定，默认为无限
  final double? maxWidth;
  
  /// 是否显示列分割线，默认为true
  final bool showDivider;
  
  /// 列宽度权重，用于在未指定宽度时按比例分配宽度，默认为1
  final double flex;

  /// 构造函数
  const HDataColumn({
    required this.label,
    required this.field,
    this.numeric = false,
    this.tooltip,
    this.sortable = true,
    this.formatValue,
    this.cellBuilder,
    this.width,
    this.minWidth = 80.0,
    this.maxWidth,
    this.showDivider = true,
    this.flex = 1.0,
  });
} 